package com.csair.platform.cit.facade;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.fastjson.JSONObject;
import com.csair.invoice.common.base.vo.JsonResult;
import com.csair.platform.cit.facade.model.CitQueryParam;
import com.csair.platform.cit.facade.model.a200000.CitMssrSaveVo;
import com.csair.platform.cit.facade.model.a200000.CitNsrxxVo;
import com.csair.platform.cit.facade.model.a200000.CitQtxxVo;
import com.csair.platform.cit.facade.model.a200000.CitSbbxxVo;
import com.csair.platform.cit.facade.model.a200000.CitYhfbxxVo;

/**
 * 申报表数据接口
 * @author caoyu
 *
 */
@RequestMapping("/a200000")
public interface A200000Api {

    /**
     * 保存申报表的头部：纳税人信息、预缴方式、企业类型等
     * @param nsrxxVo 申报表的头部
     * @return 操作提示
     */
    @PostMapping("/saveNsrxx")
    JsonResult<Void> saveNsrxx(@Validated @RequestBody CitNsrxxVo nsrxxVo);

    /**
     * 保存优惠附表数据
     * @param yhfbxxVo 优惠附表数据
     * @return 操作提示
     */
    @PostMapping("/saveYhfbxx")
    JsonResult<Void> saveYhfbxx(@Validated @RequestBody CitYhfbxxVo yhfbxxVo);

    /**
     * 保存申报表数据
     * @param sbbxxVo 申报表数据
     * @return 操作提示
     */
    @PostMapping("/saveSbbxx")
    JsonResult<Void> saveSbbxx(@Validated @RequestBody CitSbbxxVo sbbxxVo);
    
    /**
     * 保存优惠减免数据 7.*
     * @param mssrxxVo 优惠减免数据 7.*
     * @return 操作提示
     */
    @PostMapping("/saveMssrxx")
    JsonResult<Void> saveMssr(@Validated @RequestBody CitMssrSaveVo mssrxxVo);

    /**
     * 保存优惠减免数据 8.*
     * @param sdjmxxVo 优惠减免数据 8.*
     * @return 操作提示
     */
    @PostMapping("/saveSdjmxx")
    JsonResult<Void> saveSdjm(@Validated @RequestBody CitMssrSaveVo sdjmxxVo);

    /**
     * 保存优惠减免数据 13.*
     * @param jmsdxxVo 优惠减免数据 13.*
     * @return 操作提示
     */
    @PostMapping("/saveJmsdxx")
    JsonResult<Void> saveJmsd(@Validated @RequestBody CitMssrSaveVo jmsdxxVo);

    /**
     * 保存申报表的脚部：经办人、受理人信息
     * @param qtxxVo 申报表的脚部
     * @return 操作提示
     */
    @PostMapping("/saveQtxx")
    JsonResult<Void> saveQtxx(@Validated @RequestBody CitQtxxVo qtxxVo);
    
    /**
     * 获取主表数据
     * @param param 查询参数
     * @return 主表数据 
     */
    @PostMapping("/query")    
    JsonResult<JSONObject> query(@Validated @RequestBody CitQueryParam param);
    
    /**
     * 获取主表优惠编码数据
     * @param hc 主表行次，如7、8、13
     * @return 主表优惠编码数据 
     */
    @PostMapping("/queryYhbm/{hc}")    
    JsonResult<JSONObject> queryYhbm(@PathVariable(value="hc") String hc);

}
